import java.util.List;

import javax.annotation.ManagedBean;
import javax.ejb.EJB;
import javax.ejb.EJBException;
import javax.faces.application.FacesMessage;
import javax.faces.bean.RequestScoped;
import javax.faces.context.FacesContext;

import br.edu.ifrn.sca.dao.EstoqueDAORemote;
import br.edu.ifrn.sca.model.Estoque;

@ManagedBean	
@RequestScoped
public class EstoqueMB {
	@EJB
	private EstoqueDAORemote estoqueDAORemote;
	private Estoque estoque;	
	
	private static final String CREATE_ESTOQUE = "createEstoque";
    private static final String DELETE_ESTOQUE = "deleteEstoque";
    private static final String UPDATE_ESTOQUE = "updateEstoque";
    private static final String LIST_ALL_ESTOQUES = "listAllEstoques";
    private static final String STAY_IN_THE_SAME_PAGE = null; 
	
	public Estoque getEstoque(){
		if(estoque ==null)
			estoque = new Estoque();
		return estoque;
	}
	public void setEstoque(Estoque estoque){
		this.estoque =estoque;
	}
	public List<Estoque> getAllEstoques(){
		return estoqueDAORemote.buscarTodos();	
	}
	public String updateEstoqueStart(){
        return UPDATE_ESTOQUE;
    }
 
    public String updateEstoqueEnd(){
        try {
            estoqueDAORemote.atualizar(estoque, estoque.getId());
        } catch (EJBException e) {
            sendErrorMessageToUser("Error! Verifique os campos obrigat�rios.");
            return STAY_IN_THE_SAME_PAGE;
        }
 
        sendInfoMessageToUser("Atualiza��o realizada com sucesso!");
        return LIST_ALL_ESTOQUES;
    }
 
    public String deleteEstoqueStart(){
        return DELETE_ESTOQUE;
    }
 
    public String deleteEstoqueEnd(){
        try {
            estoqueDAORemote.excluir(estoque.getId());
        } catch (EJBException e) {
            sendErrorMessageToUser("Error! tente novamente ");
            return STAY_IN_THE_SAME_PAGE;
        }           
 
        sendInfoMessageToUser("Exclus�o realizada com sucesso");
 
        return LIST_ALL_ESTOQUES;
    }
 
    public String createEstoqueStart(){
        return CREATE_ESTOQUE;
    }
 
    public String createEstoqueEnd(){
        try {
          estoqueDAORemote.persistir(estoque);
        } catch (EJBException e) {
            sendErrorMessageToUser("Error! Verifique campos obrigatorios");
 
            return STAY_IN_THE_SAME_PAGE;
        }       
 
        sendInfoMessageToUser("Cadastro realizado com sucesso");
 
        return LIST_ALL_ESTOQUES;
    }
 
    public String listAllEstoques(){
        return LIST_ALL_ESTOQUES;
    }
 
    private void sendInfoMessageToUser(String message){
        FacesContext context = getContext();
        context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, message, message));
    }
 
    private void sendErrorMessageToUser(String message){
        FacesContext context = getContext();
        context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, message, message));
    }
 
    private FacesContext getContext() {
        FacesContext context = FacesContext.getCurrentInstance();
        return context;
    }
}
	


